﻿namespace Digitalmes.Domain.Entities.Mes.Productions;

/// <summary>
/// 产品生产信息文档记录。
/// </summary>
/// <remarks>会记录产品所有过站信息，包括重复过站。</remarks>
[SugarTable("prod_transform_record")]
public sealed class ProdTransformRecord : EntityBase
{
    /// <summary>
    /// SN
    /// </summary>
    [NotNull]
    public string? Sn { get; set; }

    /// <summary>
    /// 工单编号
    /// </summary>
    public string? Wo { get; set; }

    /// <summary>
    /// 产品 Id。
    /// </summary>
    public long ProductId { get; set; }

    /// <summary>
    /// 生产线 Id
    /// </summary>
    public long LineId { get; set; }

    /// <summary>
    /// 工艺路线 Id。
    /// </summary>
    public long RouteId { get; set; }

    /// <summary>
    /// 工序 Id。
    /// </summary>
    public long OpId { get; set; }

    /// <summary>
    /// 工位 Id。
    /// </summary>
    public long WsId { get; set; }

    /// <summary>
    /// 产品在当前工位进站时间
    /// </summary>
    public DateTime InboundTime { get; set; }

    /// <summary>
    /// 产品在当前工位出站时间
    /// </summary>
    public DateTime OutboundTime { get; set; }

    /// <summary>
    /// 用时(秒)
    /// </summary>
    public int CycleTime { get; set; }

    /// <summary>
    /// 标准作业时长(秒)，为 0 时不做计算。
    /// </summary>
    public int StdWorkDuration { get; set; }

    /// <summary>
    /// 班次
    /// </summary>
    public string? Shift { get; set; }

    /// <summary>
    /// 操作人员
    /// </summary>
    public string? Operator { get; set; }

    /// <summary>
    /// 过站结果（1->OK，2->NG，3->强制OK，4->强制NG）
    /// </summary>
    public PassEnum PassResult { get; set; }

    /// <summary>
    /// NG的起始工步
    /// </summary>
    public long FailedStep { get; set; }

    /// <summary>
    /// 数据创建时间
    /// </summary>
    public DateTime CreatedTime { get; set; }

    /// <summary>
    /// 关联的数据Id。
    /// </summary>
    /// <remarks>用于数据关联</remarks>
    public long DataRefId { get; set; }
}
